package com.zsy.utils;

import java.security.SecureRandom;
import java.util.Random;

public class RandomUtil {

    /**
     * 生成一个指定范围内的随机整数
     * @param min 最小值（包含）
     * @param max 最大值（包含）
     * @return 范围内的随机整数
     */
    public static int getRandom(int min, int max) {
        return new SecureRandom().nextInt((max - min) + 1) + min;
    }

    /**
     * 生成一个随机的布尔值
     * @return 随机布尔值 true 或 false
     */
    public static boolean getBoolean() {
        return getRandom(0, 1) == 1;
    }

    /**
     * 生成一个随机的长整数
     * @return 随机长整数
     */
    public static long getLongRandom() {
        return new SecureRandom().nextLong();
    }

    /**
     * 生成一个随机的浮点数
     * @return 随机浮点数
     */
    public static float getFloat() {
        return new SecureRandom().nextFloat();
    }

    /**
     * 生成一个随机的双精度浮点数
     * @return 随机双精度浮点数
     */
    public static double getDouble() {
        return new SecureRandom().nextDouble();
    }

    /**
     * 生成一个指定长度的随机字符串
     * @param length 字符串长度
     * @return 随机字符串
     */
    public static String getString(int length) {
        StringBuilder builder = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            builder.append((char) (getRandom(0, 127)));
        }
        return builder.toString();
    }

    /**
     * 生成指定长度的数字验证码
     *
     * @param length 验证码长度
     * @return 生成的验证码
     */
    private static final Random RANDOM = new Random();
    public static String generateNumericCaptcha(int length) {
        StringBuilder captcha = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int randomDigit = RANDOM.nextInt(10); // 生成0-9之间的随机数字
            captcha.append(randomDigit);
        }
        return captcha.toString();
    }
}